package org.bjf.modules.sys.enums;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.bjf.modules.sys.enums.AclEnum.PrincipalType;
import org.bjf.modules.sys.enums.AclEnum.ResourceType;

/**
 * 权限声明，标注于类上面，根据此注解检查用户的权限
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Permission {

  /**
   * 权限主体类型，默认角色
   */
  PrincipalType[] principal() default PrincipalType.ROLE;

  /**
   * 资源类型，默认controller
   */
  ResourceType[] resType() default ResourceType.CONTROLLER;

  /**
   * 资源sn码,可重复，重复时认为是同一个资源组，只是取其中一个resDesc属性
   */
  String resSn();

  /**
   * 资源描述
   */
  String resDesc();
}
